home *** CD-ROM | disk | FTP | other *** search
/ PC Media 20 / PC MEDIA CD20.iso / share / prog / cursoasm / cap1.msg next >
Text File  |  1993-06-16  |  12KB  |  184 lines

  1.                      INTRODUCCION AL ASM: ARQUITECTURA
  2.                      =================================
  3.  
  4.    En el interior de un ordenador, el microprocesador (abreviadamente uP) es
  5. un chip más interconectado a los chips de memoria, etc... La diferencia es que
  6. es un chip que, además de ser capaz de responder a las señales que le llegan
  7. del exterior, es capaz de generar señales para otros chips y recoger la
  8. respuesta de éstos.
  9.  
  10.    Supondremos en principio que tenemos un ordenador con un uP y un único
  11. chip de memoria. Supondremos que el chip de memoria es de 64 kilobytes.
  12. La memoria es igual que una serie de celdillas, en la que cada celdilla puede
  13. contener un número entre 0 y 255d (0 y 0FFh), es decir, que está compuesta
  14. de ocho bits. Las celdillas se numeran comenzando en la 0 y acabando en la
  15. 65535d (o 0FFFFh), y a este número o índice se le denomina 'dirección' de la
  16. posición de memoria o celdilla. Por tanto, con un número entre 0 y 65535d se
  17. identifica una posición de memoria en concreto. Una memoria soporta dos
  18. operaciones distintas: LECTURA y ESCRITURA. Veremos cómo se realizan estas
  19. dos operaciones a nivel de circuito.
  20.  
  21.    De los pines o patillas del chip de memoria, los que más nos interesan son
  22. los siguientes: CE o Chip Enable, RD/WR o Read/Write, las 16 patillas A0-A15,
  23. y las ocho D0-D7. Estas patillas pueden estar a dos niveles, 0V o +5V. Para las
  24. patillas de control se adopta una convención: si se dice que una patilla está
  25. 'activa a nivel alto' indica que cuando se quiere activar la función de una
  26. patilla hay que ponerla a +5; y cuando se dice que es 'activa a nivel bajo'
  27. indica que hay que ponerla a 0, y el nombre de la patilla se suele escribir
  28. con una rayita por encima. Aquí, tomaremos la convención (para simplificar),
  29. de que todas las patillas son activas a nivel alto. La patilla RD/WR indica
  30. si la operación es lectura o escritura, y asumiremos que a nivel alto significa
  31. lectura.
  32.  
  33.    Cuando el circuito externo a la memoria quiere leer el dato de una deter-
  34. minada posición de memoria, tiene que hacer varias cosas:
  35.  
  36.       -Poner CE a nivel alto (activa el chip)
  37.       -Poner RD/WR a nivel alto (indica lectura)
  38.       -Poner en las lineas A0-A15 el número en binario de la dirección de mem.
  39.        de la que se quiere leer el dato. Para saber la señal que hay que
  40.        meter a partir de la dirección, tomamos un ejemplo:
  41.  
  42.        Posición 23345d (decimal) -> 5B31h (hex.)->
  43.            0101101100110001b (binario)
  44.        Los bits o dígitos de un número se numeran empezando por la derecha con
  45.        el 0, 1,... hasta el 15 que es el de la izquierda en este caso.
  46.        Por tanto, para leer de esta posición la línea A0 debería estar a 5V
  47.        (representa un 1), las A1,A2 y A3 a 0v (representa un 0),...
  48.       -Esperar algunos ciclos de reloj (depende de la velocidad del chip) y
  49.        recoger el dato de las líneas D0-D7, que son los 8 dígitos binarios o
  50.        bits del número almacenado.
  51.  
  52.    Cuando el circuito externo lo que quiere es escribir, debe hacer lo mismo
  53. excepto que deberá poner RD/WR a nivel bajo y en lugar de leer el dato de D0-D7
  54. deberá poner él mismo los bits del dato a escribir, a menudo algunos ciclos
  55. después de poner CE activo y RD/WR a nivel bajo para dar tiempo al chip a
  56. reaccionar.
  57.  
  58.    El propio uP tiene las líneas A0-A15 entre sus pines, que van conectadas a
  59. las A0-A15 de la memoria, y tiene también D0-D7 conectadas a las de la memoria.
  60. También tiene una patilla RD/WR, que pone al valor correspondiente cuando
  61. quiere acceder a la memoria. Y también tiene una patilla, que en el Z80 (el uP
  62. que llevaban los Spectrum, los Amstrad CPC y los MSX) se llama MREQ (Memory
  63. Request), que pone a nivel alto cuando quiere acceder a memoria (lectura o
  64. escritura). Esta patilla, como habréis imaginado, va conectada al CE de la
  65. memoria. A las líneas que interconectan el uP con otros dispositivos se les
  66. denomina genéricamente 'bus', clasificándose en tres grupos funcionales: el
  67. 'bus de direcciones', formado por las líneas A0-A15, el 'bus de datos', formado
  68. por las D0-D7, y el 'bus de control' que incluye todas las demás líneas. El
  69. número de líneas para el bus de direcciones se denomina 'anchura del bus de
  70. direcciones', y análogamente para el bus de datos. El modelo idealizado que
  71. hemos visto tendría una anchura del bus de direcciones de 16 bits, y una
  72. anchura del bus de datos de 8 bits. Este modelo es muy similar a la
  73. arquitectura real de un Spectrum, por ejemplo.
  74.  
  75.    Un uP determinado se diseña de manera que pueda reconocer ciertos números
  76. como instrucciones que le indican hacer algo determinado. Estas instrucciones
  77. que el uP es capaz de reconocer forman el 'conjunto de instrucciones' del uP,
  78. y los números que le corresponden a cada una son los 'codigos de operación' de
  79. las instrucciones. Algunas instrucciones sencillas son sólo un byte, otras
  80. están formadas por 2 o más bytes. Una ristra de estas instrucciones del uP
  81. forman un programa, y a este 'lenguaje', formado únicamente por números y que
  82. entiende el uP directamente, se le llama código máquina. Al principio, los
  83. ordenadores se programaban introduciendo directamente los códigos de operación
  84. en la memoria, pero evidentemente además de tedioso resultaba de lo más
  85. proclive a errores. Además, revisar un listado de números presenta una gran
  86. dificultad para el programador. Por tanto, se define para cada uno de las
  87. instrucciones del uP una palabra representativa de su función, a la que se
  88. llama 'mnemónico', a la que eventualmente habrá que añadir los operandos para
  89. poder generar el código de operación ('opcode') completo, ya que el código de
  90. operación lleva información tanto de la instrucción a ejecutar como de los
  91. operandos que ésta manejará. El programa que traduce un texto con instruc-
  92. ciones en este nuevo lenguaje se denomina 'assembler' o 'ensamblador', y este
  93. lenguaje de programación se denomina 'assembly language' o 'lenguaje ensam-
  94. blador'. Algunos ensambladores conocidos para la familia 80x86 son el MASM o
  95. Macro ASseMbler de Microsoft y el TASM o Turbo ASseMbler de Borland. El
  96. programa DEBUG que viene con el MS-DOS o el SID que viene con el DR-DOS también
  97. son capaces de traducir instrucciones ASM en sus correspondientes códigos de
  98. operación, pero a un nivel mucho más primitivo que el MASM o el TASM.
  99.  
  100.    Ahora que ya sabemos cómo el uP puede acceder a la memoria, y cómo son los
  101. programas que ejecuta éste veamos cuál es la tarea del micro y que es lo que
  102. hace constantemente.
  103.  
  104.    Para que el uP ejecute un programa, se deben situar los códigos de operación
  105. del programa a partir de una dirección determinada. A esta dirección a partir
  106. de la que está el programa la denominamos 'dirección de comienzo' por razones
  107. evidentes. El uP internamente tiene algo de memoria, muy poca, estructurada
  108. en lo que se denomina 'registros'. Cada registro está formado por una serie de
  109. bits, 16 para ser precisos en el 8086, de forma que puede contener un número
  110. entero en un rango determinado (con 16 bits podremos almacenar números entre 0
  111. y 65535d o 0FFFFh). Los registros dependen de cada uP en concreto, pero veremos
  112. dos que existen en todo uP: el llamado 'Instruction Pointer' o 'IP' en el 8086,
  113. y el registro de instrucción. Para comprender el funcionamiento de ambos,
  114. veremos un modelo idealizado de un ordenador con un uP, un chip de memoria de
  115. 64K, un bus de direcciones de 16 bits, uno de datos de 8 bits y un conjunto de
  116. instrucciones en el que todas tienen un código de operación de un sólo byte.
  117.  
  118.    El uP tiene una patilla llamada CK habitualmente ('clock' o reloj), por el
  119. que recibe una señal cuadrada producida por un cristal de cuarzo y algo más de
  120. circuitería (señal cuadrada es una señal que periódica y alternativamente toma
  121. dos valores, en el caso de los PCs 0V y +5V. La velocidad de un ordenador en
  122. megahercios o megaciclos por segundo no es más que la frecuencia de la señal
  123. de reloj). El uP realiza varias tareas, al ritmo del reloj que se le conecta.
  124. Estas tareas requieren uno o varios ciclos de reloj, pero son siempre las
  125. mismas y se repiten constantemente:
  126.  
  127.     -Primero, el uP genera una lectura de memoria para leer el byte
  128.      contenido en la dirección de memoria indicada por IP. El valor
  129.      recibido se almacena en el registro de instrucción. Es decir, se
  130.      activan MREQ y RD/WR se pone a RD, poniendo el valor contenido en
  131.      IP en las líneas A0-A15. El valor que se lee de D0-D7 se introduce
  132.      en el registro de instrucción.
  133.     -El uP incrementa el registro IP en uno, para luego leer la siguiente
  134.      instrucción de la serie.
  135.     -El uP decodifica la instrucción del registro de instr., es decir, ve
  136.      qué significa, y la ejecuta. Esta ejecución puede implicar más accesos
  137.      a memoria para lectura/escritura, puede cambiar el IP directamente
  138.      para saltar a otra dirección (a modo del GOTO del basic), etc...
  139.     -Vuelve al primer paso, es decir, lee la siguiente instrucción.
  140.  
  141.    Y así, el uP ejecuta su trabajo 'ad infinitum'. Esta secuencia se repite
  142. incansablemente, a no ser que el micro reciba una señal que lo interrumpa, un
  143. reset, o algún otro suceso poco habitual (las interrupciones son relativamente
  144. poco habituales).
  145.  
  146.    Antes de ver el funcionamiento del 8086 en concreto, que es el uP que la
  147. arquitectura IBM PC define como estándar mínimo, revisaremos cómo se comunica
  148. el uP con los periféricos, ya que hasta ahora sólo hemos visto la comunicación
  149. con la memoria.
  150.  
  151.    En un ordenador, además de la memoria existen otros dispositivos que
  152. requieren que el uP interactúe con ellos. Estos dispositivos pueden ser el
  153. módem, la tarjeta gráfica, el teclado,... entre muchos otros. Estos dispositi-
  154. vos se comunican con el micro enviándole datos y recibiendo datos de éste.
  155. Algunos son sólo de lectura (el uP sólo puede recibir datos de ellos), otros
  156. sólo de escritura (el uP puede enviarles datos, pero ellos no envían nada a
  157. éste), y muchos otros son tanto de lectura como de escritura.
  158.  
  159.    Una de las maneras posibles sería hacer que el uP tuviese una patilla para
  160. cada dispositivo, al igual que la MREQ, de forma que cuando quisiera acceder
  161. a uno en concreto pusiese su patilla correspondiente a nivel activo y escri-
  162. biese o leyese el dato de o en el bus de datos. Pero ya que los dispositivos
  163. son muchos y los uP se diseñan de forma general para distintos circuitos, lo
  164. que se hace es asignar a cada dispositivo un número o dirección, de forma
  165. parecida a la que cada dirección de memoria identifica una celdilla, y poner
  166. una patilla en el uP (llamada IORQ - Input Output ReQuest - en el Z80, en el
  167. 8086 tendrá un nombre parecido) que se pone a nivel activo cuando se quiere
  168. acceder a cualquier dispositivo. Cada periférico (llamando periférico a todo
  169. lo que no sea la memoria o el uP) debe responder sólo cuando IORQ esté activa
  170. y lea en el bus de direcciones el número que le corresponde. Cada uno de estos
  171. valores que se sitúan en el bus de direcciones se llama 'puerto de entrada/
  172. salida'. Los puertos que le corresponden a cada dispositivo es una de las
  173. cosas que identifican un estándar, en nuestro caso el estándar PC. Algunos
  174. dispositivos, como la tarjeta gráfica, necesitan intercambiar muchos datos con
  175. el uP y por tanto requieren varios puertos. Por cierto, cada tarjeta gráfica
  176. tiene sus puertos estándar, por ejemplo los puertos de una Hércules monocromo
  177. no coinciden en absoluto con los de una VGA color, y por tanto se pueden
  178. montar ambas en el mismo ordenador.
  179.  
  180.    En el siguiente capítulo saldremos de este ordenador idealizado para entrar
  181. de lleno en la arquitectura segmentada de los compatibles PC, y veremos los
  182. registros del 8086.
  183.  
  184.    Salut!!!